package com.geek.javase.ch17.work.tcpwork.tcp3;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/*
 *@Date 2025/11/4
 *@Author wangpeng
 *@Description
 * 需求3：服务端接收多条消息，服务端也可以发送多条消息；客户端可以发送多条消息，也可以接收多条消息；（一对一，阻塞的现象）
 */
public class TCPServer {
    public static void main(String[] args) {
        System.out.println("-------服务器--------");
        try(
            //创建服务器
            ServerSocket ss = new ServerSocket(8899);
            //接收客户端，阻塞点
            Socket s = ss.accept();
            //服务器读消息
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            //通过PrintWriter将数据写入到Socket的输出流中，这个输出流是连接到客户端的。
            PrintWriter pw = new PrintWriter(s.getOutputStream());
            Scanner sc = new Scanner(System.in);
            ){
            System.out.println("客户端已成功接入！");

            //循环读、写
            String str = null;
            while ((str = br.readLine()) != null) {//读操作，阻塞点
                //先读
                if(str.equals("exit")){
                    System.out.println(s.getRemoteSocketAddress()+"下线了");
                    break;
                }else{
                    System.out.println("服务器读：" + str);
                }
                //后写
                System.out.println("服务器说：");
                String str1 = sc.nextLine();
                pw.println(str1);
                pw.flush();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
